home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / S-Sound and Music / (c)s3.d64 / sound tut-2.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  15KB  |  397 lines

  1. 0 REM" P.J.PONZO*83*WATERLOO/ONTARIO
  2. 1000 [141]60000:[153][199](142):[153]"LOAD               SOUND-2"
  3. 1001 [153]"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^"
  4. 1002 [153]"(null)           MORE C4 SOUND            WAIT (null)":MS$[178]"PONZOTUTOR"
  5. 1003 [153]"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPSTOP":[141]63100:MS$[178]" WELCOME!"
  6. 1004 [141]63100:[141]50000:[141]63000:[153]"LOADSTOP";
  7. 1010 [153]"LOADRECALLWAIT:SID=54272"
  8. 1020 M$[178]"   SID:LO FREQUENCY":[141]11100
  9. 1030 M$[178]" SID+1:HI FREQUENCY":[141]11100
  10. 1040 M$[178]" SID+2:LO PULSE":[141]11100
  11. 1050 M$[178]"CMDCMDCMDCMDCMDCMDCMDCMDCMDON    ORCMDCMDCMDCMDCMD    / SID+3:HI PULSE":[141]11100
  12. 1060 M$[178]" SID+4:WAVEFORM":[141]11100
  13. 1070 M$[178]" SID+5:ATTACK/DECAY":[141]11100
  14. 1080 M$[178]" SID+6:SUSTAIN/RELEASE":[141]11100:[141]63000
  15. 1090 [153]"ONONONONON":[153]"ALL THIS FOR VOICE#1":[141]63000:XX[178]1:[153]"ONONONON"
  16. 1095 [129]I[178]1[164]5:[153]BL$:[130]
  17. 1100 [153]"THEN...VOICE #2WAIT..":M$[178]" SID+7:LO FREQUENCY":[141]11100
  18. 1110 M$[178]" SID+8:HI FREQUENCY":[141]11100
  19. 1120 M$[178]" SID+9:LO PULSE":[141]11100
  20. 1130 M$[178]"CMDCMDCMDCMDCMDCMDCMDCMDCMDON    ORCMDCMDCMDCMDCMD    / SID+10:HI PULSE":[141]11100
  21. 1140 M$[178]" SID+11:WAVEFORM":[141]11100
  22. 1150 M$[178]" SID+12:ATTACK/DECAY":[141]11100
  23. 1160 M$[178]" SID+13:SUSTAIN/RELEASE":[141]11100:[153]"THEN FOR VOICE #3WAIT.."
  24. 1170 M$[178]" SID+14:LO FREQUENCY":[141]11100
  25. 1180 M$[178]" SID+15:HI FREQUENCY":[141]11100
  26. 1190 M$[178]" SID+16:LO PULSE":[141]11100
  27. 1200 M$[178]"CMDCMDCMDCMDCMDCMDCMDCMDCMDON    ORCMDCMDCMDCMDCMD    / SID+17:HI PULSE":[141]11100
  28. 1210 M$[178]" SID+18:WAVEFORM":[141]11100
  29. 1220 M$[178]" SID+19:ATTACK/DECAY":[141]11100
  30. 1230 M$[178]" SID+20:SUSTAIN/RELEASE":[141]11100
  31. 1240 [153]"AND..":M$[178]" SID+24:VOLUME":[141]11100:[153]"":[141]63000
  32. 1250 [153]"LOADWHAT ABOUT REGISTERS SID+21TO SID+23?":
  33. 1260 [153]"WE POKE SID+24,VOLWAIT AND VOL<16.":[153]"IS SID+24 ONLY A NYBBLE?
  34. 1270 PRINT"WE'LL LOOK AT SID+21 TO SID+24.":GOSUB63000:MS$="LET'S LOOK"
  35. 1280 GOSUB63100:PRINT"[147]AFTER GIVING 3 VOICES AN ADSR[146] ENVELOPE"
  36. 1290 PRINT"AND A FREQUENCY[146] AND A WAVEFORM[146],"
  37. 1300 PRINT"THE 3 VOICES EACH HAVE A 'PERSONALITY'."
  38. 1310 PRINT"THE SOUND OF EACH IS DETERMINED"
  39. 1320 PRINT"BY IT'S FREQUENCY COMPOSITION WHICH"
  40. 1330 PRINT"YOU CONTROL USING THE ABOVE PARAMETERS."
  41. 1340 PRINT"AFTER THIS..BUT BEFORE COMBINING"
  42. 1350 PRINT"THE 3 VOICES..YOU MAY MODIFY THIS"
  43. 1360 PRINT"FREQUENCY COMPOSITION BY HAVING"
  44. 1370 PRINT"SOME OF THE VOICES"
  45. 1380 PRINT"PASS THROUGH A FILTER[146].":GOSUB63000:MS$="A FILTER?":GOSUB63100
  46. 1390 GOSUB63000:PRINT"[147]THE LOW PASS FILTER[146] WILL ATTENUATE"
  47. 1400 PRINT"ALL FREQUENCY COMPONENTS ABOVE A"
  48. 1410 PRINT"CERTAIN 'CUT OFF FREQUENCY'."
  49. 1420 PRINT"A HIGH PASS FILTER[146] WILL ATTENUATE"
  50. 1430 PRINT"FREQUENCIES BELOW A 'CUT OFF FREQUENCY'."
  51. 1440 PRINT"A BAND PASS FILTER[146] WILL ATTENUATE"
  52. 1450 PRINT"FREQUENCIES ON EITHER SIDE OF SOME"
  53. 1460 PRINT"'CUT OFF FREQUENCY'."
  54. 1470 PRINT"IF WE CHOOSE TO 'FILTER' ONE OF THE"
  55. 1480 PRINT"3 VOICES, WE MUST TELL SID[146]"
  56. 1490 PRINT"THE CUT OFF FREQUENCY[146].":MS$="POKE SID+":GOSUB63100:GOSUB63000
  57. 1500 PRINT"[147]SID+21 IS 3 BITS & SID+22 IS A BYTE!"
  58. 1510 PRINT"THAT MAKES 11 BITS HENCE 2^11=2048"
  59. 1520 PRINT"POSSIBLE 'CUTOFF' FREQUENCIES."
  60. 1530 PRINTSPC(10)N$(1)"[157][157][157][174]   ":PRINTSPC(10)N$(2)"[157][157] SID+21"
  61. 1535 PRINTSPC(10)N$(3)"[157][157][157][189]   "
  62. 1540 PRINTNN$(1):PRINTNN$(2)" SID+22":PRINTNN$(3)
  63. 1550 PRINT"WE CHOOSE CN=CUTOFF FREQ NUMBER,THEN:"
  64. 1560 PRINT"HI=INT(CN/8):LO=CN-8*HI      "
  65. 1570 PRINT"POKE SID+21,LO:POKE SID+22,HI[146]"
  66. 1580 PRINT"THE RELATION BETWEEN THE 'NUMBER' CN[146]"
  67. 1590 PRINT"AND THE ACTUAL 'CUTOFF FREQUENCY'"
  68. 1600 PRINT"CUTOFF FREQ=30+5.8*CN HERTZ":GOSUB63000
  69. 1601 PRINT"[147]CUTOFF FREQ=30+5.8*CN HERTZ"
  70. 1602 PRINT"FOR CN=2047 (THE MAXIMUM) WE GET:"
  71. 1603 PRINT"CUTOFF FREQUENCY=30+5.8*2047=11902[146] HERTZ":GOSUB63000
  72. 1610 PRINT"[147]WE MUST ALSO TELL SID[146] WHETHER WE"
  73. 1620 PRINT"WANT LOW[146], BAND[146] OR HIGH[146] PASS:"
  74. 1630 M$=" SID+24 SID REGISTER":GOSUB11000:GOSUB63000
  75. 1640 LP$=""
  76. 1650 BP$=""
  77. 1660 HP$=""
  78. 1670 DN$=""
  79. 1680 PRINTDN$BL$DN$"LOW PASS BIT":FORI=1TO5:PRINTLP$"[214]":FORT=1TO50:NEXT
  80. 1690 PRINTLP$"[214][146]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  81. 1700 PRINTDN$BL$DN$"BAND PASS BIT":FORI=1TO5:PRINTBP$"[214]":FORT=1TO50:NEXT
  82. 1710 PRINTBP$"[214][146]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  83. 1720 PRINTDN$BL$DN$"HIGH PASS BIT":FORI=1TO5:PRINTHP$"[214]":FORT=1TO50:NEXT
  84. 1730 PRINTHP$"[214][146]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  85. 1740 PRINTDN$BL$DN$"VOLUME CONTROL!":FORI=1TO5
  86. 1745 PRINTLP$"[214][214][214][214]":FORT=1TO50:NEXT
  87. 1750 PRINTLP$"[214][214][214][214]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  88. 1760 PRINTDN$BL$DN$"..AND THIS BIT?":FORI=1TO5:PRINTHP$"[157][157]?":FORT=1TO50:NEXT
  89. 1770 PRINTHP$"[157][157]?[146]":FORT=1TO50:NEXT:NEXT:GOSUB63000:MS$="CUT VOICE3"
  90. 1780 GOSUB63100:GOSUB63000:PRINT"[147]"
  91. 1790 PRINT"WE'LL COME BACK TO BIT 7 OF SID+24!":GOSUB63000:PRINT"[145][145][145][145]"
  92. 1800 PRINT"LET'S TRY SOME OF THIS.":MS$="LET'S TRY!":GOSUB63100:GOSUB63000:XX=0
  93. 1900 FQ=7382:WN=65:PU=2048:AT=0:DE=0:SU=15:RE=0:VOL=15:GOSUB63600:GOSUB63000
  94. 1910 PRINT"[147]WE HAVE VOICE #1 PLAYING 'A'."
  95. 1920 PRINT"NOW WE'LL FILTER IT:":GOSUB63000:POKESID+24,0
  96. 1930 PRINT"[147]POKE SID+24,16+15[146]=0001 1111"
  97. 1940 PRINT"THIS GIVES VOLUME=15 AND LOW PASS[146]."
  98. 1950 PRINT"SINCE 'A'=440 HERTZ WE'LL PICK THE"
  99. 1960 PRINT"'CUT OFF FREQUENCY' AT, SAY,2000 HERTZ."
  100. 1970 PRINT"WHAT DO WE POKE SID[146] WITH?"
  101. 1980 PRINT"2000=30+5.8*(CUTOFF NUMBER) SO"
  102. 1990 PRINT"'CUTOFF NUMBER'=(2000-30)/5.8=340"
  103. 2000 PRINT"AND 340=0010 1010[146]+100[146](11-BIT BINARY)
  104. 2010 [153]"AND 0010 1010WAIT=42 AND 100WAIT=4,SO:"
  105. 2020 [153]"POKE SID+21,4:POKESID+22,42":[141]63000
  106. 2030 [153]"LOADHAVING SET THE FILTER PARAMETERS, WE"
  107. 2040 [153]"SELECT THE VOICE WE WANT FILTERED."
  108. 2050 [153]"SID+23 HAS 3 BITS FOR THIS."
  109. 2060 [153]NN$(1):[153]NN$(2)"CMDCMDCMDCMDCMDCMD321SID+23":[153]NN$(3)
  110. 2070 [153]"POKE SID+23,1WAIT TO FILTER VOICE #1."
  111. 2080 [153]"LISTEN..."
  112. 2095 [153]"AS WE LOWER THE CUTOFF FREQUENCY"
  113. 2096 [153]"THE HIGHER FREQUENCIES ARE"
  114. 2097 [153]"ATTENUATED AND THE TONE BECOMES"
  115. 2098 [153]"QUIETER AND MORE 'MELLOW'.":[141]63000:FI[178]16:FI$[178]"LOW PASS"
  116. 2100 [153]"LOAD        "FI$" FILTER   ":CF[178]2100:FR[178]440:SID[178]54272:[151]SID[170]21,0
  117. 2101 [151]SID[170]24,15:[153]"WITHOUT":[141]63000
  118. 2102 [153]"LOAD        "FI$" FILTER   ":[137]2120
  119. 2105 [153]""BL$:[153]"CUT OFF FREQUENCY=     CMDCMDCMDCMDCMD"CF"HERTZ"
  120. 2106 [153]"CUT OFF NUMBER   =     CMDCMDCMDCMDCMD"CN%
  121. 2107 [153]"POKE SID+21,   CMDCMDCMD"LO%":POKE SID+22,   CMDCMDCMD"HI%
  122. 2110 [153]"VOICE #1 FREQUENCY="FR"HERTZ":[151]SID[170]23,1
  123. 2120 CN%[178](CF[171]30)[173]5.8:HI%[178]CN%[173]8:LO%[178]CN%[171]8[172]HI%
  124. 2130 [151]SID[170]21,LO%:[151]SID[170]22,HI%:[151]SID[170]24,FI[170]15:[151]SID[170]23,1
  125. 2140 [139]XX[178]0[167][139][194](203)[178]64[167]2140
  126. 2150 CF[178]CF[171]100:[139]CF[177]0[167]2105
  127. 2155 [139]XX[178]1[167]2200
  128. 2156 [139]XX[178]2[167] [141]63000:[137]2240
  129. 2160 [141]63000:[153]"LOADNOW LET'S TRY THAT WITH"
  130. 2170 [153]"A TRIANGLEWAIT WAVEFORM."
  131. 2180 [153]"WE POKE SID+4,17WAIT FOR "TR$TR$:[141]63000:XX[178]1:WN[178]17:[141]63600
  132. 2190 [141]63000:[137]2100
  133. 2200 [141]63000:[153]"LOADNOW LET'S TRY THAT WITH"
  134. 2210 [153]"A SAWTOOTHWAIT WAVEFORM."
  135. 2220 [153]"WE POKE SID+4,33WAIT FOR "SA$SA$:[141]63000:XX[178]2:WN[178]33:[141]63600
  136. 2230 [141]63000:[137]2100
  137. 2240 [151]SID[170]21,8:[151]SID[170]22,50:[129]II[178]1[164]5
  138. 2241 [153]"LOADFREQUENCY 440 HERTZWAIT "SA$SA$
  139. 2242 [153]"CUTOFF AT 1000 HERTZWAIT"
  140. 2243 [153]"JUST 2 OR 3 HARMONICS GET THRU' FILTER.."
  141. 2244 [153]"WITHCMDCMDCMDCMDFREFREFREFREON FILTERING...":[151]SID[170]23,1:[151]SID[170]24,31
  142. 2245 [129]T[178]1[164]500:[130]
  143. 2250 [153]"WITHOUTCMDCMDCMDCMDCMDCMDCMDFREFREFREFREFREFREFREON FILTERING...":[151]SID[170]23,0
  144. 2255 [129]T[178]1[164]500:[130]:[130]:[151]SID[170]4,65:[151]SID[170]3,150:[129]II[178]1[164]3
  145. 2260 [153]"LOADFREQUENCY 440 HERTZWAIT "PU$PU$
  146. 2270 [153]"CUTOFF AT 1000 HERTZWAIT"
  147. 2280 [153]"JUST 2 OR 3 HARMONICS GET THRU' FILTER.."
  148. 2290 [153]"WITHCMDCMDCMDCMDFREFREFREFREON FILTERING...":[151]SID[170]23,1:[151]SID[170]24,31
  149. 2300 [129]T[178]1[164]500:[130]
  150. 2310 [153]"WITHOUTCMDCMDCMDCMDCMDCMDCMDFREFREFREFREFREFREFREON FILTERING...":[151]SID[170]23,0
  151. 2320 [129]T[178]1[164]500:[130]:[130]
  152. 2330 [151]SID[170]4,65:[151]SID[170]3,150:[151]SID[170]21,2:[151]SID[170]22,21:[129]II[178]1[164]3
  153. 2340 [153]"LOAD    HIGH PASS FILTER   ":[153]"FREQUENCY 440 HERTZWAIT "PU$PU$
  154. 2350 [153]"CUTOFF AT 1000 HERTZWAIT"
  155. 2360 [153]"...THE HIGHWAIT HARMONICS GET THRU' FILTER.."
  156. 2370 [153]"WITHCMDCMDCMDCMDFREFREFREFREON FILTERING...":[151]SID[170]23,1:[151]SID[170]24,64[170]15
  157. 2380 [129]T[178]1[164]500:[130]
  158. 2390 [153]"WITHOUTCMDCMDCMDCMDCMDCMDCMDFREFREFREFREFREFREFREON FILTERING...":[151]SID[170]23,0
  159. 2400 [129]T[178]1[164]500:[130]:[130]:[151]SID[170]24,0:[141]63000
  160. 2410 [151]SID[170]24,15[170]64:[151]SID[170]23,1:[151]SID[170]4,33
  161. 2420 [153]"LOAD   HIGH PASS FILTER   ":[153]"440 HERTZ TONE:"SA$SA$
  162. 2425 [129]II[178]10[164]250[169]10:[151]SID[170]22,II
  163. 2430 [153]""BL$"POKE SID,"II
  164. 2435 [153]"CUTOFF FREQUENCY="[181](II[172]5.8[170]30)
  165. 2440 [139][194](203)[178]64[167]2440
  166. 2450 [130]:[151]SID[170]24,0:[141]63000
  167. 2460 [153]"LOADWITHOUT    LOW PASS FILTER   WAIT "SA$SA$:SID[178]54272:[151]SID[170]23,0
  168. 2480 [153]"              JESU JOY       ":MS$[178]"  TWANGY":[141]63100
  169. 2490 VOL[178]10:AT[178]0:DE[178]0:SU[178]10:RE[178]5:M0[178]1:M1[178]31:MV[178]0:WN[178]33:XX[178]2:YY[178]0:[141]10000
  170. 2500 [153]"LOAD           LOW PASS FILTER   WAIT "SA$SA$:SID[178]54272:[151]SID[170]23,1
  171. 2510 [153]"      CUTOFF FREQUENCY = 2000 HERTZ":[151]SID[170]21,4:[151]SID[170]22,42
  172. 2520 [153]"             JESU JOY       ":MS$[178]" SMOOTH!":[141]63100
  173. 2530 VOL[178]15:AT[178]0:DE[178]0:SU[178]10:RE[178]5:M0[178]1:M1[178]31:MV[178]0:WN[178]33:XX[178]2:YY[178]16:[141]10000
  174. 2540 [153]"LOAD           LOW PASS FILTER   WAIT "SA$SA$:SID[178]54272:[151]SID[170]23,7
  175. 2550 [153]"      CUTOFF FREQUENCY = 2000 HERTZ":[151]SID[170]21,4:[151]SID[170]22,42
  176. 2560 [153]"     THREE VOICES..PLAYING "
  177. 2565 [153]"     SUCCESSIVE NOTES."             "
  178. 2570 PRINT"             JESU JOY       ":MS$=" FIND #1":GOSUB63100
  179. 2580 VOL=10:AT=0:DE=0:SU=10:RE=5:M0=1:M1=31:MV=2:WN=33:XX=2:YY=16:GOSUB10000
  180. 2590 GOSUB63000:POKESID+24,0:POKESID+23,0
  181. 2600 PRINT"[147]       BELLS   "
  182. 2610 PRINT"POKE SID+1,10     [146] FREQ FOR VOICE #1"
  183. 2620 PRINT"POKE SID+7*2+1,9  [146] FREQ FOR VOICE #3"
  184. 2630 PRINT"POKE SID+6,10*16+9[146] SUS=10 REL=9"
  185. 2640 PRINT"POKE SID+24,15    [146] MAXIMUM VOLUME"
  186. 2650 PRINT"FOR  I=1 TO 10    [146] 10 TIMES"
  187. 2660 PRINT"POKE SID+4,17     [146] GATE VOICE #1"
  188. 2670 PRINT"FOR  T=1TO500:NEXT[146] DELAY"
  189. 2680 PRINT"POKE SID+4,16     [146] TURN OFF #1  "
  190. 2690 PRINT"FOR  T=1TO500:NEXT[146] DELAY"
  191. 2695 PRINT"NEXT I            [146]"
  192. 2700 SU=10:RE=9:YY=0:ZZ=0:GOSUB12000:GOSUB63000
  193. 2710 PRINT"POKE SID+7*2+1,9  [146] FREQ FOR VOICE #3"
  194. 2720 PRINT"WE DIDN'T USE VOICE #3!"
  195. 2730 PRINT"NOW WE'LL SET BIT 2[146]"
  196. 2740 PRINT"OF SID+4":MS$="  SID+4??":GOSUB63100:GOSUB63000
  197. 2750 PRINT"POKE SID+4,17+4  [146]  WAVE + BIT 2[146]  "
  198. 2800 SU=10:RE=9:YY=128:ZZ=4:GOSUB12000:GOSUB63000
  199. 2900 PRINT"[147]"NN$(1):PRINTNN$(2)" SID+4":PRINTNN$(3)
  200. 2910 WV$="[214][214][214][214]":DN$=""
  201. 2920 PRINTDN$BL$DN$"WAVEFORM BITS=16,32,64,128"
  202. 2930 FORI=1TO6:PRINT""WV$:FORT=1TO50:NEXT:PRINTWV$:FORT=1TO50:NEXT:NEXT
  203. 2940 GOSUB63000:PRINTDN$BL$DN$"RING MODULATION BIT"
  204. 2950 W1$=WV$+"[214]":W2$=WV$+""+"[214]"
  205. 2960 FORI=1TO6:PRINTW1$:FORT=1TO50:NEXT:PRINTW2$:FORT=1TO50:NEXT:NEXT
  206. 2970 PRINT"THIS BIT 2[146], WHEN SET=1, CAUSES"
  207. 2980 PRINT"VOICE #1 TO BE MODULATED[146] BY VOICE #3."
  208. 2990 PRINT"THE SOUND OUTPUT IS THE LOGICAL AND[146]"
  209. 3000 PRINT"OF VOICES 1 & 3, GIVING A 'WAVERING'"
  210. 3010 PRINT"SOUND...":GOSUB63000:GOSUB12000:MS$="  GONGS":GOSUB63100
  211. 3020 PRINT"[147]IF VOICE #3 IS TO 'INFLUENCE' VOICE #1"
  212. 3030 PRINT"THEN WE DON'T WANT TO HEAR VOICE #3."
  213. 3040 PRINT"IT WOULD BE CONVENIENT IF WE COULD"
  214. 3050 PRINT"CUT VOICE #3":GOSUB63000:PRINT"[147]"NN$(1)
  215. 3055 PRINTNN$(2)" SID+24":PRINTNN$(3)
  216. 3060 LP$=""
  217. 3070 BP$=""
  218. 3080 HP$=""
  219. 3090 DN$=""
  220. 4000 PRINTDN$BL$DN$"LOW PASS BIT":FORI=1TO5:PRINTLP$"[214]":FORT=1TO50:NEXT
  221. 4010 PRINTLP$"[214][146]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  222. 4020 PRINTDN$BL$DN$"BAND PASS BIT":FORI=1TO5:PRINTBP$"[214]":FORT=1TO50:NEXT
  223. 4030 PRINTBP$"[214][146]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  224. 4040 PRINTDN$BL$DN$"HIGH PASS BIT":FORI=1TO5:PRINTHP$"[214]":FORT=1TO50:NEXT
  225. 4050 PRINTHP$"[214][146]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  226. 4060 PRINTDN$BL$DN$"VOLUME CONTROL!":FORI=1TO5
  227. 4065 PRINTLP$"[214][214][214][214]":FORT=1TO50:NEXT
  228. 4070 PRINTLP$"[214][214][214][214]":FORT=1TO50:NEXT:NEXT:GOSUB63000
  229. 4080 PRINTDN$BL$DN$"..AND THIS BIT?":FORI=1TO5:PRINTHP$"[157][157]?":FORT=1TO50:NEXT
  230. 4090 PRINTHP$"[157][157]?[146]":FORT=1TO50:NEXT:NEXT:GOSUB63000:MS$="CUT VOICE3"
  231. 4100 GOSUB63100:GOSUB63000
  232. 9998 POKE54272+24,0
  233. 9999 GOSUB63000:PRINT"[147]":MS$="AU REVOIR!":GOSUB63100:PRINT"":END
  234. 10000 IFPU=0THENPU=4000
  235. 10001 S=54272:FORVV=0TO2:POKES+5+7*VV,16*AT+DE:POKES+6+7*VV,16*SU+RE
  236. 10002 POKES+2+7*VV,PUAND255:POKES+3+7*VV,PU/256:POKES+7*VV,0:POKES+1+7*VV,0
  237. 10003 NEXT:POKES+24,VOL+YY:QQ=2^(1/12)
  238. 10004 IFXX=2THEN10010
  239. 10005 PRINT""BL$:PRINTBL$:PRINT"[145][145]"
  240. 10006 IFWN=17THENPRINT"  "TR$TR$TR$TR$
  241. 10007 IFWN=33THENPRINT"  "SA$SA$SA$SA$
  242. 10008 IFWN=65THENPRINT"  "PU$PU$PU$PU$
  243. 10009 IFWN=129THENPRINT"  "NO$
  244. 10010 FORI=M0TOM1:FR=2000*(QQ^N(I))
  245. 10020 HI=INT(FR/256):LO=FR-256*HI:POKES+7*VC,LO:POKES+1+7*VC,HI:POKES+4+7*VC,WN
  246. 10030 FORJ=1TO50*P(I):NEXT:VC=VC+1:IFVC>MVTHENVC=0
  247. 10035 POKES+4+7*VC,WN-1
  248. 10040 NEXT:FORVV=0TO2:POKES+4+7*VV,0:NEXT:FORT=1TO500:NEXT:IFXX=0THENGOSUB63000
  249. 10050 RETURN
  250. 11000 PRINTNN$(1):PRINTNN$(2)M$:PRINTNN$(3):RETURN
  251. 11100 PRINTR$"";M$"[145]":PRINT:IFXX=0THEN RETURN
  252. 11110 FORT=1TO300:NEXT:RETURN
  253. 12000 POKESID+1,10:POKESID+15,9:POKESID+24,15+YY:POKESID+6,SU*16+RE
  254. 12010 FORI=1TO5:POKESID+4,17+ZZ:FORT=1TO100:NEXT:POKESID+4,16+ZZ
  255. 12020 FORT=1TO1000:NEXT:NEXT:RETURN
  256. 50000 REM JESU JOY
  257. 50001 RESTORE
  258. 50002 READ M
  259. 50003 DIM N(M),P(M)
  260. 50005 FORI=1TOM
  261. 50006 READN(I),P(I):NEXT:RETURN
  262. 50009 DATA 103
  263. 50010 DATA12,2,8,2,10,2,12,2,15,2,13,2,13,2,17,2,15,2,15,2
  264. 50011 DATA20,2,19,2,20,2,15,2,12,2,8,2,10,2,12,2,13,2,15,2
  265. 50012 DATA17,2,15,2,13,2,12,2,10,2,12,2,8,2,7,2,8,2,10,2
  266. 50013 DATA3,2,7,2,10,2,13,2,12,2,10,2,12,2,8,2,10,2,12,2
  267. 50014 DATA15,2,13,2,13,2,17,2,15,2,15,2,20,2,19,2,20,2,15,2
  268. 50015 DATA12,2,8,2,10,2,12,2,5,2,15,2,13,2,12,2,10,2,8,2
  269. 50016 DATA3,2,8,2,7,2,8,2,12,2,15,2,20,2,15,2,12,2,8,2
  270. 50017 DATA12,2,15,2,18,2,15,2,12,2,8,2,12,2,15,2,17,2,13,2
  271. 50018 DATA10,2,7,2,10,2,13,2,15,2,12,2,8,2,5,2,8,2,12,2
  272. 50019 DATA13,2,10,2,7,2,3,2,7,2,10,2,13,2,12,2,10,2,8,2
  273. 50020 DATA12,2,15,2,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  274. 60000 REM INITIALIZE
  275. 60001 BT$="":FORI=1TO24:BT$=BT$+"":NEXT
  276. 60002 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]"
  277. 60003 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[167]"
  278. 60004 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]"
  279. 60005 PT$=BT$+"[145][145][145][145][145][145]"+PT$+"[144]"
  280. 60007 BL$="                                       "
  281. 60008 WD=40:CRT=1024
  282. 60009 POKE53281,1:POKE53280,15:PRINT"[144]"
  283. 60012 N$(1)="[176][192][178][192][178][192][178][192][174]"
  284. 60013 N$(2)="[221] [221] [221] [221] [221]"
  285. 60014 N$(3)="[173][192][177][192][177][192][177][192][189]"
  286. 60015 NN$(1)="[176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174]"
  287. 60016 NN$(2)="[221] [221] [221] [221] [221] [221] [221] [221] [221]"
  288. 60017 NN$(3)="[173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]"
  289. 60020 R$="[176][178][178][178][178][178][178][178][174][157][157][157][157][157][157][157][157][157][173][177][177][177][177][177][177][177][189][145]"
  290. 60030 L$="- - - - - - - - -"
  291. 60040 PS$=""
  292. 60050 DN$=""
  293. 60060 BMM$="":MCM$="":SMB$=""
  294. 60070 CMB$=SMB$+"":CL$="                                        "
  295. 60080 DN$=DN$+CL$+DN$
  296. 60090 SC$=SMB$+""
  297. 60100 CH$=SC$+""
  298. 60110 DD$="":DD$=DD$+CL$+DD$
  299. 60120 TR$="[206][145][206][205][205]"
  300. 60130 SA$="[206][145][206][165][157][204]"
  301. 60140 PU$="[165][145][157][207][208][157][167][164][164][164][164][157]":NN=9
  302. 60150 SID=54272:FORI=0TO28:POKESID+I,0:NEXT
  303. 60200 GOSUB62005:GOSUB63500:RETURN
  304. 62000 :
  305. 62005 U$="[180][145][157]":D$="[180][157]":T$="[207][180][157]":B$="[204][180][145][157]"
  306. 62010 A$(0)="[175]"
  307. 62011 A$(1)=T$+B$:U=1:D=2:FORJ=2TO10
  308. 62012 A$="":FORI=1TOU:A$=A$+U$:NEXT:A$=A$+T$:FORI=1TOD:A$=A$+D$:NEXT
  309. 62013 A$=A$+B$:FORI=1TOU:A$=A$+U$:NEXT:A$(J)=A$:U=U+1:D=2*U:NEXT
  310. 62015 FORJ=1TO5:D$(J)=A$(10-J):NEXT
  311. 62016 SS$=D$(5)
  312. 62017 FORI=1TO5:R$(I)=A$(5-I):NEXT
  313. 62020 RETURN
  314. 63000 PRINT"HIT RETURN[146] TO CONTINUE";
  315. 63001 GETA$:IFA$<>""THEN63001
  316. 63002 GETA$:IFA$=""THEN63002
  317. 63003 RETURN
  318. 63004 RETURN
  319. 63100 FORT=1TO5:PRINTPT$MS$;
  320. 63101 PRINTPT$"          ";
  321. 63102 PRINTPT$MS$;:NEXT
  322. 63103 PRINT"[144]":RETURN
  323. 63200 PRINT"":FORI=0TO10:FORJ=1TOLEN(A$(I))
  324. 63205 PRINTMID$(A$(I),J,1);:NEXT:NEXT
  325. 63210 FORI=0TO5:FORJ=1TOLEN(D$(I))
  326. 63215 PRINTMID$(D$(I),J,1);:NEXT:NEXT
  327. 63220 FORI=0TO3:FORJ=1TOLEN(SS$)
  328. 63225 PRINTMID$(SS$,J,1);:NEXT:NEXT
  329. 63230 RETURN
  330. 63300 PRINT""
  331. 63305 FORI=0TO10:FORJ=1TOLEN(SS$)
  332. 63310 PRINTMID$(SS$,J,1);:NEXT:NEXT
  333. 63320 FORI=0TO4:FORJ=1TOLEN(R$(I))
  334. 63330 PRINTMID$(R$(I),J,1);:NEXT:NEXT
  335. 63340 FORI=1TO3:PRINTA$(0);:NEXT:RETURN
  336. 63400 PRINT"":FORI=3TO10:PRINTA$(I);:NEXT
  337. 63410 FORI=1TO5:PRINTD$(I);:NEXT
  338. 63420 FORI=0TO2:PRINTSS$;:NEXT
  339. 63430 FORI=1TO4:PRINTR$(I);:NEXT
  340. 63450 PRINT"-----A[146]TTACK------D[146]ECAY--S[146]USTAIN--R[146]ELEASE":RETURN
  341. 63500 U$="[221][145][157]":D$="[221][157]"
  342. 63510 A$="":FORI=1TONN:K=1+4*RND(1):FORJ=1TOK:A$=A$+U$:NEXT:A$=A$+"[176][174][157]"
  343. 63520 FORJ=1TOK:A$=A$+D$:NEXT:A$=A$+"[145][173]":NEXT:NO$=A$:RETURN
  344. 63600 PRINT"[147]SID=54272":SID=54272
  345. 63601 POKESID+4,0:POKESID+23,0
  346. 63605 IFXX=0THEN GOSUB63000
  347. 63610 PRINT"HI=INT("FQ"/256)":HI=INT(FQ/256)
  348. 63615 IFXX=0THENGOSUB63000
  349. 63620 PRINT"LO="FQ"-256*HI":LO=FQ-256*HI
  350. 63625 IFXX=0THENGOSUB63000
  351. 63630 PRINT"POKE SID  ,LO":POKESID,LO
  352. 63635 IFXX=0THENGOSUB63000
  353. 63640 PRINT"POKE SID+1,HI":POKESID+1,HI
  354. 63645 IFXX=0THENGOSUB63000
  355. 63646 IFPU=0THEN63680
  356. 63650 PRINT"PULSE="PU
  357. 63655 IFXX=0THENGOSUB63000
  358. 63660 PRINT"POKE SID+2,PULSE AND 255":POKESID+22,PUAND255
  359. 63665 IFXX=0THENGOSUB63000
  360. 63670 PRINT"POKE SID+3,PULSE/256":POKESID+3,PU/256
  361. 63675 IFXX=0THENGOSUB63000
  362. 63680 PRINT"AT="AT":DE="DE":SU="SU":RE="RE
  363. 63681 IFXX=0THENGOSUB63000
  364. 63685 PRINT"POKE SID+5,16*AT+DE":POKESID+5,16*AT+DE
  365. 63686 IFXX=0THENGOSUB63000
  366. 63690 PRINT"POKE SID+6,16*SU+RE":POKESID+6,16*SU+RE
  367. 63695 IFXX=0THENGOSUB63000
  368. 63700 PRINT"VOLUME="VOL
  369. 63705 IFXX=0THENGOSUB63000
  370. 63710 PRINT"POKE SID+24,VOLUME":POKESID+24,VOL
  371. 63715 IFXX=0THENGOSUB63000
  372. 63720 PRINT"WN="WN
  373. 63725 IFXX=0THENGOSUB63000
  374. 63730 PRINT"POKE SID+4,WN  :REM GATE IT":POKESID+4,WN
  375. 63745 RETURN
  376. 63800 PRINT"[147]FREQ (HERTZ)= "FR:INPUT"[145]";FR:IFFR>3900THEN63800
  377. 63801 FQ=INT(FR/.059604645+.5):PRINT"FQ="FQ
  378. 63805 PRINT"WAVEFORM (T[146]RIANGLE,S[146]AWTOOTH,P[146]ULSE"
  379. 63806 GETWN$:IFWN$=""THEN63806
  380. 63810 IFWN$="T"THENWN=17:GOTO63825
  381. 63815 IFWN$="S"THENWN=33:GOTO63825
  382. 63820 IFWN$="P"THENWN=65:GOTO63825
  383. 63821 GOTO63806
  384. 63825 PRINT"WN="WN:IFWN<>65THEN63835
  385. 63830 PRINT"PULSE WIDTH= ";PU
  386. 63831 INPUT"[145]";PU
  387. 63835 PRINT"ATTACK= ";AT
  388. 63836 INPUT"[145]";AT
  389. 63837 PRINT"DECAY = ";DE
  390. 63838 INPUT"[145]";DE
  391. 63840 PRINT"SUSTAIN = ";SU
  392. 63841 INPUT"[145]";SU
  393. 63842 PRINT"RELEASE = ";RE
  394. 63843 INPUT"[145]";RE
  395. 63845 INPUT"VOLUME   15[157][157][157][157]";VOL
  396. 63850 RETURN
  397.